home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / csim / source.lha / source / C++SIM / Examples / Job.cc < prev    next >
C/C++ Source or Header  |  1993-06-14  |  976b  |  61 lines

  1. /*
  2.  * Copyright (C) 1993
  3.  *
  4.  * Department of Computing Science,
  5.  * The University,
  6.  * Newcastle upon Tyne,
  7.  * UK.
  8.  */
  9.  
  10. #include <iostream.h>
  11.  
  12. #ifndef PROCESS_H_
  13. #include <Process.h>
  14. #endif
  15.  
  16. #ifndef JOB_H_
  17. #include "Job.h"
  18. #endif
  19.  
  20. #ifndef MACHINE_H_
  21. #include "Machine.h"
  22. #endif
  23.  
  24. #ifndef QUEUE_H_
  25. #include "Queue.h"
  26. #endif
  27.  
  28.  
  29. extern Machine* M;
  30. extern Queue JobQ;
  31. extern long TotalJobs;
  32. extern double TotalResponseTime;
  33. extern Scheduler *sc;
  34.  
  35. Job::Job ()
  36. {
  37.     boolean empty;
  38.  
  39.     ResponseTime = 0;
  40.     ArrivalTime = sc->CurrentTime();
  41.     empty = JobQ.IsEmpty();
  42.     JobQ.Enqueue(this);
  43.     TotalJobs++;
  44.  
  45.     if (empty && !M->Processing() && M->IsOperational())
  46.     M->Activate();
  47. }
  48.  
  49. Job::~Job ()
  50. {
  51.     ResponseTime = sc->CurrentTime() - ArrivalTime;
  52.  
  53. #ifdef DEBUG
  54.     cerr << "ArrivalTime is " << ArrivalTime << "\n";
  55.     cerr << "Time now is " << sc->CurrentTime() << "\n";
  56.     cerr << "ResponseTime is " << ResponseTime << "\n";
  57. #endif
  58.  
  59.     TotalResponseTime += ResponseTime;
  60. }
  61.